#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// 最美数字：n个积木组成数字
// 可以选择替换一次或不替换
// 若能成回文，则返回最小的回文；无法成回文则替换一个其中数使结果最小

// 例子：
// 输入积木数量为5
// 11210	可替换一次成回文（11211或01210），输出结果01210
// 00011	替换一次不成回文，输出结果00001


void int_to_arr(int x, int arr[]) {
	int i = 0;
	while (x) {
		arr[i++] = x%10;
		x /= 10;
	}
}

char *arr_to_string(int arr[], int len) {
	char *str = malloc(sizeof(char) * (len+1));
	str[len] = '\0';
	int cnt = 0;	//转换结果[1 0 0 0 0] --- "00001"
	for (int i = len - 1; i >= 0; i--) {
		str[cnt++] = arr[i] + '0';
	}
	return str;
}

// 注意结果应为字符串，如01210，前导零要输出
char *perfect_number(int x, int n)
{
	int i, arr[n];
	for (i = 0; i < n; i++) arr[i] = 0;

	int_to_arr(x, arr);	//逆序存储
	int diff = 0, idx = 0;
	for (i = 0; i < n/2; i++) {
		if (arr[i] != arr[n-1 - i]) {
			diff++;
			idx = i;
		}
	}

	if (diff == 0) ; //回文数，do nothing
	else if (diff == 1) {	//11210中 1,0取最小
		if (arr[idx] > arr[n-1 -idx]) arr[idx] = arr[n-1 -idx];
		else arr[n-1 -idx] = arr[idx];
	} else {
		int high = n-1;	//将高位置0
		while (high >= 0) {
			if (arr[high] == 0)
				high--;
			else {
				arr[high] = 0;
				break;
			}
		}
	}

	return arr_to_string(arr, n);
}


int main()
{
	int n, num;
	scanf("%d%d", &n, &num);
	printf("%s", perfect_number(num, n));
}